/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package userservercontroller;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.LinkedList;
import messagemanager.JMessage;

/**
 * Интерфейс содержащий основный методы для сугово сетевых служб взаймодействия клиента и сервера
 * @author ID=1008, Ustinov
 * @version 0.1
 */
public interface INetworking extends Remote {

 /**
     * Запросить у сервера факт накопленных сообщений
     * @param autorizationKey - авторизационный ключ пользователя
     * @return 0 - авторизован, сообщений нет
     *         1 - авторизован, есть сообщения
     *        -1 - не авторизован
     * @throws java.rmi.RemoteException - разрыв соединения с сервером
 */
    public long pingLastOperationStatus(long autorizationKey) throws RemoteException;

    /**
     * Получить кандидата в арбитры
     * @return null - арбитраж не поддерживается, или имя кандидата
     * @throws java.rmi.RemoteException  - ошибка соединения
     */
    public String getCandidateIP() throws RemoteException;

    /**
     * Получить все сообщения от сервера
     * @return сообщения от сервера
     * @throws java.rmi.RemoteException - оишибка соединения
     */
    public String getServerAnswer() throws RemoteException;

    /**
     * Получить сообщений от сервера
     * @param autorizationKey  авторизационный ключ
     * @return список сообщений от сервера
     * @throws java.rmi.RemoteException ошибка соединения
     */
    public LinkedList<JMessage> getMessageList(long autorizationKey) throws RemoteException;
}
